package com.tank.game.api.config;

import java.util.HashMap;
import java.util.Map;
import java.util.function.Consumer;

/**
 * @author Zed
 */
public class ParamsBuilder {

    protected Map<String, String> params;

    /**
     * 无参构造方法
     */
    public ParamsBuilder() {
    }


    /**
     * 设置参数
     * <p>
     * 不支持覆写已存在参数.
     *
     * @param name  {@link String},参数名
     * @param value {@link String},参数值
     * @return {@link ParamsBuilder}
     */
    public ParamsBuilder setParameter(String name, String value) {
        return this.setParameter(name, value, null);
    }

    /**
     * 设置参数
     * <p>
     * 不支持覆写已存在参数.
     *
     * @param name   {@link String},参数名
     * @param value  {@link String},参数值
     * @param action {@link Consumer},参数设置是否成功的回调函数,可以为null.
     * @return {@link ParamsBuilder}
     */
    public ParamsBuilder setParameter(String name, String value, Consumer<Boolean> action) {
        if (name != null && value != null) {
            if (this.params == null) {
                this.params = new HashMap<>();
            }
            boolean success = this.params.putIfAbsent(name, value) == null;
            if (action != null) {
                action.accept(success);
            }
        }

        return this;
    }
}
